// ValidationAspects
// Written by Mike Saunders
// Released under Microsoft Public License (Ms-PL)
using System;
using ValidationAspects.Exceptions;

namespace ValidationAspects
{
	// add custom validator exceptions here via extension methods
	public interface IFormatExceptionMessage
	{
		void GreaterThan(Func<ValidateGreaterThanException, string> formatMessage);
		void InRange(Func<ValidateInRangeException, string> formatMessage);
		void IsDate(Func<ValidateIsDateException, string> formatMessage); 
		void IsEmail(Func<ValidateIsEmailException, string> formatMessage);
		void LengthInRange(Func<ValidateLengthInRangeException, string> formatMessage);
		void LessThan(Func<ValidateLessThanException, string> formatMessage);
		void MatchesRegex(Func<ValidateMatchesRegexException, string> formatMessage);
		void Maximum(Func<ValidateMaximumException, string> formatMessage);
		void MaximumLength(Func<ValidateMaximumLengthException, string> formatMessage);
		void Minimum(Func<ValidateMinimumException, string> formatMessage);
		void MinimumLength(Func<ValidateMinimumLengthException, string> formatMessage);
		void NotEqual(Func<ValidateNotEqualException, string> formatMessage);
		void NotInRange(Func<ValidateNotInRangeException, string> formatMessage);
		void NotNull(Func<ValidateNotNullException, string> formatMessage);
		void NotNullOrEmpty(Func<ValidateNotNullOrEmptyException, string> formatMessage);
		void ValidateObject(Func<ValidateObjectException, string> formatMessage);
	}
}